package com.amu.aidemo.android.config

/**
 * LLM（大语言模型）配置
 */
object LlmConfig {
    /**
     * 模型选择
     * 
     * 智谱 AI 可用模型：
     * - "glm-4-flash": 速度最快，首字延迟 2-5秒，适合对话场景（推荐）✅
     * - "glm-4-air": 轻量版，速度快，成本低
     * - "glm-4": 标准版，平衡性能和质量
     * - "glm-4-plus": 增强版，质量更高但稍慢
     * - "glm-4.6": 最强大，但首字延迟 30-40秒，不适合实时对话
     * 
     * 更多模型请参考：https://open.bigmodel.cn/dev/api#glm-4
     */
    const val MODEL = "glm-4-flash"
    
    /**
     * Temperature: 控制回答的随机性和创造性
     * 
     * 范围：0.0-1.0
     * - 0.0-0.3: 更确定、一致的回答（适合事实性问题）
     * - 0.4-0.6: 平衡（推荐）
     * - 0.7-0.9: 更有创造性、多样性（适合创作、头脑风暴）
     * - 1.0: 最大随机性
     * 
     * 默认：0.7
     */
    const val TEMPERATURE = 0.7f
    
    /**
     * Max Tokens: 最大生成的 token 数量
     * 
     * 说明：
     * - 中文：1 token ≈ 1.5-2 个字
     * - 英文：1 token ≈ 0.75 个单词
     * 
     * 推荐值：
     * - 512: 简短回答（约 750-1000 字）- 适合语音播报
     * - 1024: 中等回答（约 1500-2000 字）
     * - 2048: 详细回答（约 3000-4000 字）
     * - 4096: 长篇回答
     * 
     * 默认：512（适合语音助手）
     */
    const val MAX_TOKENS = 512
    
    /**
     * System Prompt: 系统提示词，定义 AI 的行为和回答风格
     * 
     * 这是最重要的配置，决定了 AI 的"人格"和回答方式
     */
    val SYSTEM_PROMPT = """
你是一个友好、专业的 AI 语音助手。请遵循以下规则：
必须使用粤语口语
1. 回答要简洁明了，适合语音播报（控制在 100 字以内）
2. 使用口语化的表达，避免过于书面化
3. 对于复杂问题，先给出核心答案，再简要说明
4. 如果不确定，诚实地说"我不太确定"
5. 保持友好、耐心的语气
    """.trimIndent()
    
    // ========================================
    // 预设 System Prompt（可以快速切换）
    // ========================================
    
    /**
     * 简洁助手：极简回答，适合快速问答
     */
    val SYSTEM_PROMPT_CONCISE = """
你是一个简洁的 AI 助手。请用 1-2 句话简短回答问题，不要过于详细。
    """.trimIndent()
    
    /**
     * 专业助手：详细、专业的回答
     */
    val SYSTEM_PROMPT_PROFESSIONAL = """
你是一个专业的 AI 助手。请提供准确、详细的回答，包含必要的背景信息和解释。
    """.trimIndent()
    
    /**
     * 友好助手：温暖、亲切的语气
     */
    val SYSTEM_PROMPT_FRIENDLY = """
你是一个友好、热情的 AI 助手。用温暖、亲切的语气回答问题，让用户感到舒适和被理解。
回答要简洁（100字以内），适合语音播报。
    """.trimIndent()
    
    /**
     * 幽默助手：带点幽默感
     */
    val SYSTEM_PROMPT_HUMOROUS = """
你是一个幽默风趣的 AI 助手。在回答问题时可以适当加入幽默元素，但要确保信息准确。
回答要简洁（100字以内），适合语音播报。
    """.trimIndent()
    
    /**
     * 儿童助手：适合儿童的语言风格
     */
    val SYSTEM_PROMPT_CHILD = """
你是一个儿童 AI 助手。用简单、易懂的语言回答问题，就像在和小朋友说话一样。
避免使用复杂的词汇，多用比喻和例子。回答要简短（50字以内）。
    """.trimIndent()
    
    /**
     * 老师助手：教学风格
     */
    val SYSTEM_PROMPT_TEACHER = """
你是一个耐心的 AI 老师。回答问题时要循序渐进，先解释基础概念，再深入细节。
用通俗易懂的语言，适当举例说明。回答控制在 150 字以内。
    """.trimIndent()
    
    /**
     * 粤语助手：粤语风格（配合粤语 TTS）
     */
    val SYSTEM_PROMPT_CANTONESE = """
你是一个友好的粤语 AI 助手。请用粤语口语化的表达方式回答问题。
回答要简洁（100字以内），适合语音播报。
    """.trimIndent()
}
